package linkedlist.leetcode_24;

public class Recur {
    public ListNode swapPairs(ListNode head) {
        // base_case：能发生交换至少要存在两个节点，所以当节点个数不足两个时结束递归
        if (head == null || head.next == null) {
            return head;
        }
        // 递归中要做的事情
        // 对应图中的三个节点 head、next、swapPairs(next.next)
        ListNode next = head.next;
        head.next = swapPairs(next.next);
        next.next = head;
        // 返回的是已经完成交换的部分链表的头节点
        return next;
    }
}
